//
// Created by admin on 2023/4/10.
//

#ifndef STL_MAP_MY_HASHMAP_H
#define STL_MAP_MY_HASHMAP_H

#include<map>
#include<unordered_map>
#include<iostream>

/**
 * 实现目的：当hash冲突后，底层结构采用红黑树，也就是调用map解决
 * */
template<typename KEY, typename VALUE>
class my_hashmap : std::unordered_map<KEY, std::map<KEY, VALUE>> {
    typedef std::pair<KEY, std::map<KEY, VALUE>> mvalue_type;
    typedef std::pair<KEY, VALUE> value_type;
    typedef std::size_t size_type;
public:
    void set_load_factor(double z) {
        this->set_load_factor(z);
    }

    void minsert(const value_type &__x) {

        ((*this)[__x.first])[__x.first] = __x.second;

    }

    VALUE &get_value(const KEY &__k) {
        return ((*this)[__k])[__k];
    }

    size_type mcount(const KEY &__k) {

        if (!this->count(__k)) {
            return 0;
        } else {
            return (*this)[__k].count(__k);
        }
    }
};

#endif //STL_MAP_MY_HASHMAP_H
